package net.edu_soft.ec.asset.service.impl;

import com.github.pagehelper.PageInfo;
import net.edu_soft.ec.asset.constant.EduConstant;
import net.edu_soft.ec.asset.mapper.CloudFileMapper;
import net.edu_soft.ec.asset.pojo.CloudFile;
import net.edu_soft.ec.asset.pojo.CloudFileExample;
import net.edu_soft.ec.asset.service.CloudFileService;
import net.edu_soft.ec.common.exception.ParameterException;
import net.edu_soft.ec.common.util.PuingUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class CloudFileServiceImpl implements CloudFileService {

    @Autowired
    private CloudFileMapper cloudFileMapper;

    @Override
    public CloudFile find(Integer id) {
        return sel(id+"",1);
    }

    @Override
    public CloudFile find(String name) {
        return sel(name,3);
    }

    @Override
    public PageInfo<CloudFile> finList(Integer fileType, Integer affId, Integer pageNum, Integer pageSize) {
        return null;
    }

    @Override
    public int save(CloudFile cloudFile) {
        check(cloudFile);
        return  cloudFileMapper.insertSelective(cloudFile);
    }

    @Override
    public int update(CloudFile cloudFile) {

        return 0;
    }

    @Override
    public int del(String ids, Integer isDel) {
        return 0;
    }

    /***
     * 查询文件
     * @param data id、名称、归属id
     * @param code 1id查找 2归属id查询，3文件名
     * @return
     */
    private CloudFile sel(String data, int code) {
        PuingUtil.isEmpty("文件管理: 查询条件不能为空，data:" + data, data);
        CloudFileExample example = new CloudFileExample();
        CloudFileExample.Criteria criteria = example.createCriteria();
        if (code == 1) {//文件id
            criteria.andCloudFileIdEqualTo(Integer.parseInt(data.trim()));
        } else if (code == 2) {//归属id
            criteria.andAffIdEqualTo(Integer.parseInt(data.trim()));
        }else {//文件名
            criteria.andNameEqualTo(data);
        }
        List<CloudFile> cloudFiles = cloudFileMapper.selectByExample(example);
        if(cloudFiles.size()>0){
            return cloudFiles.get(0);
        }
        return null;
    }

    /***
     * 校验数据
     * @param cloudFile
     */
    private void check(CloudFile cloudFile) {
        if(cloudFile==null){
            throw new ParameterException("文件信息为空！！！！");
        }
        //PuingUtil.notNullByZero(cloudFile.getFileTypeId(),"文件管理：文件归属id不能为空或小于等于0");
        PuingUtil.isEmpty("文件管理：文件名不能为空",cloudFile.getName().trim());
        PuingUtil.isEmpty("文件管理：文件资源路径不能为空",cloudFile.getUrl().trim());
        if(cloudFile.getSize()==null || cloudFile.getSize()<=0){
                throw new ParameterException("文件管理：文件大小不能为空或者小于等于0");
        }
        cloudFile.setStatus(EduConstant.STATUS_ZREO);
    }
}
